-- 1.参数列表
-- 1.1.前缀
local voucherPrefix = ARGV[1]
local orderPrefix = ARGV[2]
-- 1.2.优惠卷id
local voucherId = ARGV[3]
-- 1.3.用户id
local userId = ARGV[4]

-- 2.数据key
-- 2.1.库存key
local stockKey = voucherPrefix .. voucherId
-- 2.2.订单key
local orderKey = orderPrefix .. voucherId

-- 3.脚本业务
-- 3.1.判断库存是否充足
if(tonumber(redis.call('get',stockKey)) <= 0) then
    -- 3.2.库存不足，返回1
    return 1
end
-- 3.2.判断用户是否下单
if(redis.call('sismember',orderKey,userId) == 1) then
    -- 3.3.存在，重复下单，返回2
    return 2
end
-- 3.4.扣库存
redis.call('incrby',stockKey,-1)
-- 3.5.保存用户id（下单）
redis.call('sadd',orderKey,userId)
return 0